The present invention relates to data processing, and more particularly to systems, methods, and computer program products for sharing data. Virtualization technology has matured significantly over the past decade and has become pervasive within the service industry, especially for server consolidation. Research and commercial industry is now focused on optimizing the virtual environment to enable more virtual machines (VMs) to be packed on a single server, to lower power consumed in the data center environment, to lower cost of the virtualized solution, and to efficiently use the available computing resources. A significant limiting factor in accommodating more VMs on a server is memory, as the operating systems (OS) and applications are becoming more resource intensive and require significant physical memory to avoid frequent paging.
Known techniques for more efficiently using memory include (1) content-based page sharing and (2) difference engines. Content-based page sharing shares identical pages across VMs, thereby reducing the amount of physical memory required. A difference engine shares identical as well as similar pages (most of the content is identical but some content is different) and also reduces the amount of physical memory required. The difference engine technique significantly reduces the amount of physical memory required compared to content-based sharing, but is computationally very expensive as it implements a Not Recently Used (NRU) policy and requires the entire memory to be scanned periodically.
Both techniques implement the copy-on-write technique to avoid the pages from being corrupted. When a write command is received to modify a shared page, the copy-on-write technique causes the shared page to be copied and the write command is implemented on the copy. The copy-on-write technique thereby prevents the shared page from being corrupted, but any memory reduction is reversed as soon as a write command is received because the shared page must be copied.